<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>SystemSharp: ControlflowAnalysis.cs Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">SystemSharp
   &#160;<span id="projectnumber">0.3</span>
   </div>
   <div id="projectbrief">A system-level modeling framework for designing real-time embedded systems</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Packages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_controlflow_analysis_8cs_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Events</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">ControlflowAnalysis.cs</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_controlflow_analysis_8cs.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="keyword">using</span> System;</div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">using</span> System.Collections.Generic;</div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="keyword">using</span> System.Diagnostics.Contracts;</div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">using</span> System.Linq;</div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="keyword">using</span> System.Text;</div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">using</span> SystemSharp.TreeAlgorithms;</div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="keyword">namespace </span>SystemSharp.Analysis</div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;{</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="interface_system_sharp_1_1_analysis_1_1_i_instruction.html">   32</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">interface </span><a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction.html">IInstruction</a></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    {</div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="interface_system_sharp_1_1_analysis_1_1_i_instruction.html#a4b13a050c8d0f50fbb4ae2c551d138dc">   34</a></span>&#160;        <span class="keywordtype">int</span> Index { <span class="keyword">get</span>; set;  }</div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    }</div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2">   40</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">enum</span> <a class="code" href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2">EInstructionClass</a></div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    {</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2adacdb83ade6c4e8878717e206175dfd8">Branch</a>,</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2a003ad240907f30f029b30e4afbbb0e6d">LocalVariableAccess</a>,</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2ac3755e61202abd74da5885d2e9c9160e">Call</a>,</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2a6311ae17c1ee52b36e68aaf4ad066387">Other</a></div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    }</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1">   66</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">enum</span> <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1">EBranchBehavior</a></div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    { </div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1ac7a99bc13d9a899dad0e6372da96d3ac">NoBranch</a>,</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1a5ee075c892e8b140f5c5ffdccb27b28b">UBranch</a>,</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1a4a7aa8e5bec284d6af34bd57ce4e9ea6">CBranch</a>,</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>,</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1a988fd738de9c6d177440c5dcf69e73ce">Return</a>,</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1a8ce61dd2505effd96f937fa743b6491f">Throw</a></div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    }</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48">  102</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">enum</span> <a class="code" href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48">ELocalVariableAccess</a></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    {</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48a88a12f09800c497f30b98781952b50f2">NoAccess</a>,</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48a99302f479550c659a7461577136d7fa6">ReadVariable</a>,</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48a114757c38419c9fc8c3811768d549204">WriteVariable</a>,</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48a33b51eacb1cd95814bc38547576081ee">AddressOfVariable</a></div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    }</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="interface_system_sharp_1_1_analysis_1_1_i_instruction_resource.html">  128</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">interface </span><a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction_resource.html">IInstructionResource</a></div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    {</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        <span class="keywordtype">bool</span> ConflictsWith(<a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction_resource.html">IInstructionResource</a> other);</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    }</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11">  141</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">enum</span> <a class="code" href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11">EInstructionResourceAccess</a></div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    {</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11a81e124c25b261c366509c30962a4a7fd">NoResource</a>,</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11a26fccddf2f94b1685b184267996e10f8">Reading</a>,</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11aaf96ab416602c6852b1ba5201feaacf6">Writing</a></div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    }</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="interface_system_sharp_1_1_analysis_1_1_i_instruction_info_3_01_ti_01_4.html">  163</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">interface </span>IInstructionInfo&lt;Ti&gt;</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    {</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2">EInstructionClass</a> Classify(Ti i);</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1">EBranchBehavior</a> IsBranch(Ti i, out IEnumerable&lt;int&gt; targets);</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48">ELocalVariableAccess</a> IsLocalVariableAccess(Ti i, out <span class="keywordtype">int</span> localIndex);</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;        <a class="code" href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11">EInstructionResourceAccess</a> UsesResource(Ti i, out <a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction_resource.html">IInstructionResource</a> resource);</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    }</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_instruction_info_extensions.html">  197</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">class </span><a class="code" href="class_system_sharp_1_1_analysis_1_1_instruction_info_extensions.html">InstructionInfoExtensions</a></div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    {</div>
<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_instruction_info_extensions.html#a7c1b4d559ed1b3b4378197b36421e31f">  206</a></span>&#160;        <span class="keyword">public</span> <span class="keyword">static</span> IEnumerable&lt;int&gt; GetSuccessors&lt;Ti&gt;(<span class="keyword">this</span> <a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction_info_3_01_ti_01_4.html">IInstructionInfo&lt;Ti&gt;</a> ii, Ti i)</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;            where Ti: <a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction.html">IInstruction</a></div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;        {</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;            IEnumerable&lt;int&gt; targets;</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;            IEnumerable&lt;int&gt; foll = Enumerable.Repeat(i.Index, 1);</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;            <span class="keywordflow">switch</span> (ii.IsBranch(i, out targets))</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;            {</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                <span class="keywordflow">case</span> EBranchBehavior.CBranch:</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                <span class="keywordflow">case</span> EBranchBehavior.Switch:</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                    <span class="keywordflow">return</span> targets.Concat(foll);</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                <span class="keywordflow">case</span> EBranchBehavior.NoBranch:</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                    <span class="keywordflow">return</span> foll;</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                <span class="keywordflow">case</span> EBranchBehavior.Return:</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                <span class="keywordflow">case</span> EBranchBehavior.Throw:</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                    <span class="keywordflow">return</span> Enumerable.Empty&lt;<span class="keywordtype">int</span>&gt;();</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;                <span class="keywordflow">case</span> EBranchBehavior.UBranch:</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;                    <span class="keywordflow">return</span> targets;</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;                    <span class="keywordflow">throw</span> <span class="keyword">new</span> NotImplementedException();</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;            }</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        }</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    }</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div>
<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_reference_info.html">  236</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">class </span><a class="code" href="class_system_sharp_1_1_analysis_1_1_reference_info.html">ReferenceInfo</a></div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    {</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        [Flags]</div>
<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#af0929cbdd5bcfdabd1f413d443966893">  242</a></span>&#160;        <span class="keyword">public</span> <span class="keyword">enum</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#af0929cbdd5bcfdabd1f413d443966893">EMode</a></div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        {</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;            <a class="code" href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48a88a12f09800c497f30b98781952b50f2">NoAccess</a> = 0x0,</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;            Read = 0x1,</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;            Write = 0x2</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;        }</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#a4bb81eb7b464b88cae5e10b20875cc10">  252</a></span>&#160;        <span class="keyword">public</span> <span class="keyword">enum</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#a4bb81eb7b464b88cae5e10b20875cc10">EKind</a></div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        {</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;            Assignment,</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;            Indirect</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        }</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div>
<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#a686db2a797480322d3926b687e719c88">  261</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#af0929cbdd5bcfdabd1f413d443966893">EMode</a> Mode { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div>
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#aaf550172efd766ad1fe199653bbd44cc">  266</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#a4bb81eb7b464b88cae5e10b20875cc10">EKind</a> Kind { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div>
<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#a4fa436399c628826743da44fce11c373">  271</a></span>&#160;        <span class="keyword">public</span> IEnumerable&lt;int&gt; ReachingDefinitions { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div>
<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#aaa9a8467b55a9ea95ddd3e8961984865">  280</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#aaa9a8467b55a9ea95ddd3e8961984865">ReferenceInfo</a>(<a class="code" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#af0929cbdd5bcfdabd1f413d443966893">EMode</a> mode, <a class="code" href="class_system_sharp_1_1_analysis_1_1_reference_info.html#a4bb81eb7b464b88cae5e10b20875cc10">EKind</a> kind, IEnumerable&lt;int&gt; reachingDefinitions)</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        {</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;            Mode = mode;</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;            Kind = kind;</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;            ReachingDefinitions = reachingDefinitions;</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        }</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    }</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;</div>
<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="interface_system_sharp_1_1_analysis_1_1_i_extended_instruction_info_3_01_ti_01_4.html">  292</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">interface </span>IExtendedInstructionInfo&lt;Ti&gt;: IInstructionInfo&lt;Ti&gt;</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        where Ti : <a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction.html">IInstruction</a></div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    {</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        IEnumerable&lt;ReferenceInfo&gt; GetIndirections(Ti i, <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html">ControlFlowGraph&lt;Ti&gt;</a> cfg);</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    }</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;</div>
<div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html">  308</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">class </span>ControlFlowGraph&lt;Ti&gt; </div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        where Ti: <a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction.html">IInstruction</a></div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    {</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">bool</span>[] _branches;</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">bool</span>[] _branchTargets;</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        <span class="keyword">private</span> Ti[][] _successors;</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        <span class="keyword">private</span> Ti[][] _predecessors;</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        <span class="keyword">private</span> Ti _marshal;</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">int</span> _entryPoint;</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        <span class="keyword">private</span> ISet&lt;int&gt; _exitPoints;</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div>
<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a80c2c7dfe11694ac7f2febc8b13bbb65">  331</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction_info_3_01_ti_01_4.html">IInstructionInfo&lt;Ti&gt;</a> InstructionInfo { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;</div>
<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa0c5a4fc92d5f9ee838b2d5ac0b258f0">  336</a></span>&#160;        <span class="keyword">public</span> List&lt;Ti&gt; Instructions { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div>
<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af5c2602bc2ba7e9d47ecb920770e65d9">  341</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> EntryCB { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;</div>
<div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a870910afc6340485e06e797a3a11c518">  346</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] BasicBlocks { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div>
<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a0020d8ad2c74d005197c90f5fe700a14">  356</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a0020d8ad2c74d005197c90f5fe700a14">ControlFlowGraph</a>(IEnumerable&lt;Ti&gt; instructions, Ti marshal, <a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction_info_3_01_ti_01_4.html">IInstructionInfo&lt;Ti&gt;</a> iinfo, <span class="keywordtype">int</span> entryPoint = 0, ISet&lt;int&gt; exitPoints = null)</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;        {</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;            InstructionInfo = iinfo;</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;            Instructions = <span class="keyword">new</span> List&lt;Ti&gt;(instructions);</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;            Instructions.Add(marshal);</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;            <span class="keywordtype">int</span> numInstrs = Instructions.Count;</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;            _marshal = marshal;</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;            _entryPoint = entryPoint;</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;            _exitPoints = exitPoints;</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;            _branches = <span class="keyword">new</span> <span class="keywordtype">bool</span>[numInstrs];</div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;            _branchTargets = <span class="keyword">new</span> <span class="keywordtype">bool</span>[numInstrs];</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;            _successors = <span class="keyword">new</span> Ti[numInstrs][];</div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;            _successors[numInstrs - 1] = <span class="keyword">new</span> Ti[0];</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;            _predecessors = <span class="keyword">new</span> Ti[numInstrs][];</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;            Setup();</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        }</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div>
<div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a259683dc2ea7d3b84d09b0f7cdcea50f">  383</a></span>&#160;        <span class="keyword">public</span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a259683dc2ea7d3b84d09b0f7cdcea50f">IsLocalPinned</a>(<span class="keywordtype">int</span> local)</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        {</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;        }</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">void</span> MarkAsBranch(Ti ili)</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        {</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;            Contract.Requires&lt;ArgumentException&gt;(ili.Index &gt;= 0);</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;            Contract.Requires&lt;ArgumentException&gt;(ili.Index &lt; Instructions.Count);</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;            _branches[ili.Index] = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;        }</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;</div>
<div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af63cace6d5aaf14d33002169490d1f51">  396</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af63cace6d5aaf14d33002169490d1f51">IsBranch</a>(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;        {</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;            Contract.Requires&lt;ArgumentException&gt;(index &gt;= 0);</div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;            Contract.Requires&lt;ArgumentException&gt;(index &lt; Instructions.Count);</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;            <span class="keywordflow">return</span> _branches[index];</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;        }</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">void</span> MarkAsBranchTarget(Ti ili)</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;        {</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;            Contract.Requires&lt;ArgumentException&gt;(ili.Index &gt;= 0);</div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;            Contract.Requires&lt;ArgumentException&gt;(ili.Index &lt; Instructions.Count);</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;            _branchTargets[ili.Index] = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        }</div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;</div>
<div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa0f66e1d0dd6b8c1445c690f38662a04">  412</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa0f66e1d0dd6b8c1445c690f38662a04">IsBranchTarget</a>(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;        {</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;            <span class="keywordflow">return</span> _branchTargets[index];</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;        }</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">void</span> AnalyzeBranches()</div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        {</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;            MarkAsBranchTarget(Instructions[_entryPoint]);</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;            Ti[] term = <span class="keyword">new</span> Ti[] { _marshal };</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;            MarkAsBranch(_marshal);</div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;            MarkAsBranchTarget(_marshal);</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;            <span class="keywordflow">foreach</span> (Ti ili <span class="keywordflow">in</span> Instructions)</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;            {</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;                <span class="keywordflow">if</span> (_exitPoints != null &amp;&amp; _exitPoints.Contains(ili.Index))</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;                {</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;                    _successors[ili.Index] = term;</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;                    MarkAsBranch(ili);</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;                }</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ili.Index == _marshal.Index)</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                {</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                    _successors[ili.Index] = <span class="keyword">new</span> Ti[0];</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;                }</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;                {</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;                    IEnumerable&lt;int&gt; targets;</div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;                    <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1">EBranchBehavior</a> bb = InstructionInfo.IsBranch(ili, out targets);</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;                    <span class="keywordtype">bool</span> includeNext = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;                    <span class="keywordtype">bool</span> isBranch = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;                    <span class="keywordtype">bool</span> isTerm = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;                    <span class="keywordflow">switch</span> (bb)</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;                    {</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;                        <span class="keywordflow">case</span> EBranchBehavior.NoBranch:</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;                            includeNext = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;                            isBranch = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;                            isTerm = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;                            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;                        <span class="keywordflow">case</span> EBranchBehavior.UBranch:</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;                            includeNext = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;                            isBranch = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;                            isTerm = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;                            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;</div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;                        <span class="keywordflow">case</span> EBranchBehavior.CBranch:</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;                            includeNext = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;                            isBranch = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;                            isTerm = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;                            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;</div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;                        <span class="keywordflow">case</span> EBranchBehavior.Return:</div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;                        <span class="keywordflow">case</span> EBranchBehavior.Throw:</div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;                            includeNext = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;                            isBranch = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;                            isTerm = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;                            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;                        <span class="keywordflow">case</span> EBranchBehavior.Switch:</div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;                            includeNext = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;                            isBranch = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;                            isTerm = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                            <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;                        <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;                            <span class="keywordflow">throw</span> <span class="keyword">new</span> NotImplementedException();</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;                    }</div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;                    <span class="keywordflow">if</span> (isBranch)</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;                        MarkAsBranch(ili);</div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                    <span class="keywordflow">foreach</span> (<span class="keywordtype">int</span> target <span class="keywordflow">in</span> targets)</div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;                        MarkAsBranchTarget(Instructions[target]);</div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;                    <span class="keywordflow">if</span> (isTerm &amp;&amp; ili.Index &lt; Instructions.Count - 1)</div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;                    {</div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;                        _successors[ili.Index] = term;</div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;                    }</div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;                    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (includeNext)</div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;                    {</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;                        List&lt;Ti&gt; succs = <span class="keyword">new</span> List&lt;Ti&gt;();</div>
<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;                        succs.Add(Instructions[ili.Index + 1]);</div>
<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;                        succs.AddRange(targets.Select(t =&gt; Instructions[t]));</div>
<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;                        _successors[ili.Index] = succs.ToArray();</div>
<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;                    }</div>
<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;                    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;                    {</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;                        _successors[ili.Index] = targets.Select(t =&gt; Instructions[t]).ToArray();</div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;                    }</div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;                }</div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;            }</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;        }</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div>
<div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a6b5956c06a8a298304286a8005db00b0">  503</a></span>&#160;        <span class="keyword">protected</span> <span class="keywordtype">void</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a6b5956c06a8a298304286a8005db00b0">ComputePredecessors</a>()</div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;        {</div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;            List&lt;Ti&gt;[] tmp = <span class="keyword">new</span> List&lt;Ti&gt;[Instructions.Count];</div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; tmp.Length; i++)</div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;            {</div>
<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;                tmp[i] = <span class="keyword">new</span> List&lt;Ti&gt;();</div>
<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;            }</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;            <span class="keywordflow">foreach</span> (Ti i <span class="keywordflow">in</span> Instructions)</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;            {</div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;                Ti[] succs = GetSuccessorsOf(i);</div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;                <span class="keywordflow">foreach</span> (Ti j <span class="keywordflow">in</span> succs)</div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;                {</div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;                    tmp[j.Index] .Add(i);</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;                }</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;            }</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; tmp.Length; i++)</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;            {</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;                _predecessors[i] = tmp[i].ToArray();</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;            }</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;        }</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;</div>
<div class="line"><a name="l00529"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ac6dc8f7463e58f11e8ac6849e50f1acd">  529</a></span>&#160;        <span class="keyword">public</span> Ti[] <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ac6dc8f7463e58f11e8ac6849e50f1acd">GetSuccessors</a>(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;        {</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;            <span class="keywordflow">return</span> _successors[index];</div>
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;        }</div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;</div>
<div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a2dc7fac06bd1ad1fa8ea76cd94e4095a">  539</a></span>&#160;        <span class="keyword">public</span> Ti[] <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a2dc7fac06bd1ad1fa8ea76cd94e4095a">GetSuccessorsOf</a>(Ti ili)</div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;        {</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;            <span class="keywordflow">return</span> _successors[ili.Index];</div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;        }</div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;</div>
<div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a05c9f79b103980e69809b9529e711525">  549</a></span>&#160;        <span class="keyword">public</span> Ti[] <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a05c9f79b103980e69809b9529e711525">GetPredecessors</a>(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;        {</div>
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;            <span class="keywordflow">return</span> _predecessors[index];</div>
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;        }</div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;</div>
<div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ac3e44c9f0c164a0936c8af1c47e52130">  559</a></span>&#160;        <span class="keyword">public</span> Ti[] <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ac3e44c9f0c164a0936c8af1c47e52130">GetPredecessorsOf</a>(Ti ili)</div>
<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;        {</div>
<div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;            <span class="keywordflow">return</span> _predecessors[ili.Index];</div>
<div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;        }</div>
<div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;</div>
<div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ad53cd4f85a326f93a65facd93644333a">  569</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">int</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ad53cd4f85a326f93a65facd93644333a">GetIDomIndex</a>(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;        {</div>
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;            <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> bb = GetBasicBlockContaining(index);</div>
<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;            <span class="keywordflow">if</span> (bb.<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a5597d747f1ee9ac6cc8ba953c3a4c33f">StartIndex</a> == index)</div>
<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;            {</div>
<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;                <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> bbidom = bb.IDom;</div>
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;                <span class="keywordflow">if</span> (bbidom == bb)</div>
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;                    <span class="keywordflow">return</span> index;</div>
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;                    <span class="keywordflow">return</span> bbidom.EndIndex;</div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;            }</div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;            {</div>
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;                <span class="keywordflow">return</span> GetPredecessors(index).Single().Index;</div>
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;            }</div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        }</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">int</span> _maxBBSize;</div>
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;        </div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;        <span class="keyword">public</span> <span class="keywordtype">int</span> MaxBBSize</div>
<div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa2956ca81392bf7caaba12e446ff5728">  592</a></span>&#160;        {</div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;            <span class="keyword">get</span></div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;            {</div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;                <span class="keywordflow">if</span> (_maxBBSize == 0)</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;                    _maxBBSize = BasicBlocks.Max(bb =&gt; bb.Range.Count);</div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;                <span class="keywordflow">return</span> _maxBBSize;</div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;            }</div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;        }</div>
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;</div>
<div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ab8bbf4a61340fff1ff5b7388a3bfa846">  610</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">int</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ab8bbf4a61340fff1ff5b7388a3bfa846">GetPostOrderIndex</a>(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;        {</div>
<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;            <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> bb = GetBasicBlockContaining(index);</div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;            <span class="keywordflow">return</span> bb.PostOrderIndex * MaxBBSize + index;</div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;        }</div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;</div>
<div class="line"><a name="l00621"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a9d54a4394119c32cd709e713f9576916">  621</a></span>&#160;        <span class="keyword">public</span> IEnumerable&lt;int&gt; <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a9d54a4394119c32cd709e713f9576916">GetLCASet</a>(IEnumerable&lt;int&gt; query)</div>
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;        {</div>
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;            List&lt;int&gt; result = <span class="keyword">new</span> List&lt;int&gt;();</div>
<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;            TreeOperations.GetLCATree(query,</div>
<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;                <span class="keyword">new</span> DelegatePropMap&lt;int, int&gt;(GetIDomIndex),</div>
<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;                0,</div>
<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;                <span class="keyword">new</span> DelegatePropMap&lt;int, int&gt;(GetPostOrderIndex),</div>
<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;                <span class="keyword">new</span> DelegatePropMap&lt;int, int&gt;((i, p) =&gt; { result.Add(p); }));</div>
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;            <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;        }</div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;</div>
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">bool</span> IsEndOfBB(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;        {</div>
<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;            <span class="keywordflow">return</span> IsBranch(index) ||</div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;                IsBranchTarget(index + 1);</div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;        }</div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;</div>
<div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aefe2bdb6703327dc54e53fd13c829d76">  643</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aefe2bdb6703327dc54e53fd13c829d76">GetBasicBlockStartingAt</a>(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;        {</div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;            <span class="keywordflow">return</span> BasicBlocks.Where(bb =&gt; bb.StartIndex == index).Single();</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;        }</div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;</div>
<div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa5d3e71c9bc2640da4bb8455a58087c3">  653</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa5d3e71c9bc2640da4bb8455a58087c3">GetBasicBlockContaining</a>(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;        {</div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;            <span class="keywordflow">return</span> BasicBlocks.Where(bb =&gt; bb.StartIndex &lt;= index &amp;&amp; bb.EndIndex &gt;= index).Single();</div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;        }</div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;</div>
<div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a02fbac5e52aeca7c53b979a3b464d8d8">  668</a></span>&#160;        <span class="keyword">protected</span> <span class="keyword">virtual</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a02fbac5e52aeca7c53b979a3b464d8d8">CreateBasicBlock</a>(<span class="keywordtype">int</span> startIndex, <span class="keywordtype">int</span> lastIndex)</div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;        {</div>
<div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>(startIndex, lastIndex, <span class="keyword">this</span>);</div>
<div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;        }</div>
<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;</div>
<div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">void</span> InferBasicBlocks()</div>
<div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;        {</div>
<div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;            List&lt;BasicBlock&lt;Ti&gt;&gt; bbs = <span class="keyword">new</span> List&lt;BasicBlock&lt;Ti&gt;&gt;();</div>
<div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;            <span class="keywordtype">int</span> curIndex = 0;</div>
<div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;            <span class="keywordflow">do</span></div>
<div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;            {</div>
<div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;                <span class="keywordtype">int</span> startIndex = curIndex;</div>
<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;                <span class="keywordtype">int</span> lastIndex = curIndex;</div>
<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;                <span class="keywordflow">while</span> (!IsEndOfBB(lastIndex))</div>
<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;                    ++lastIndex;</div>
<div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;                <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> bb = CreateBasicBlock(startIndex, lastIndex);</div>
<div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;                <span class="keywordflow">if</span> (curIndex == Instructions.Count - 1)</div>
<div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;                {</div>
<div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;                    bb.IsExitBlock = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;                }</div>
<div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;                {</div>
<div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;                    IEnumerable&lt;int&gt; targets;</div>
<div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;                    <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1">EBranchBehavior</a> bbh = InstructionInfo.IsBranch(Instructions[lastIndex], out targets);</div>
<div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;                    <span class="keywordflow">if</span> (bbh == <a class="code" href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1">EBranchBehavior</a>.Switch)</div>
<div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;                    {</div>
<div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;                        <span class="comment">// Special case: evil switch instructions</span></div>
<div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;                        bb.IsSwitch = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;                    }</div>
<div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;                }</div>
<div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;</div>
<div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;                bbs.Add(bb);</div>
<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;</div>
<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;                curIndex = lastIndex + 1;</div>
<div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;            } <span class="keywordflow">while</span> (curIndex &lt; Instructions.Count);</div>
<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;            BasicBlocks = bbs.ToArray();</div>
<div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;        }</div>
<div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;</div>
<div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;        <span class="keyword">private</span> <span class="keywordtype">void</span> MarkSwitchTargets()</div>
<div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;        {</div>
<div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;            <span class="keywordflow">foreach</span> (BasicBlock&lt;Ti&gt; cb <span class="keywordflow">in</span> BasicBlocks)</div>
<div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;            {</div>
<div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;                <span class="keywordflow">if</span> (cb.IsSwitch)</div>
<div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;                {</div>
<div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;                    BasicBlock&lt;Ti&gt;[] succs = cb.Successors;</div>
<div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;                    <span class="keywordflow">foreach</span> (BasicBlock&lt;Ti&gt; succ <span class="keywordflow">in</span> succs)</div>
<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;                        succ.IsSwitchTarget = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;                }</div>
<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;            }</div>
<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;        }</div>
<div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;</div>
<div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a148c06fbb5564cdc5e36cf3ead7167ce">  723</a></span>&#160;        <span class="keyword">protected</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a148c06fbb5564cdc5e36cf3ead7167ce">AnalyzeLoops</a>()</div>
<div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;        {</div>
<div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;            IGraphAdapter&lt;BasicBlock&lt;Ti&gt;&gt; a = <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>.LoopAnalysisAdapter;</div>
<div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;            <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] reachable = a.GetPreOrder(BasicBlocks, EntryCB);</div>
<div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;            a.InvertRelation(a.Succs, a.Preds, reachable);</div>
<div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;            a.AnalyzeLoops(reachable, EntryCB);</div>
<div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;        }</div>
<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;</div>
<div class="line"><a name="l00735"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af90c76096917b1aca642d97928562ab2">  735</a></span>&#160;        <span class="keyword">protected</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af90c76096917b1aca642d97928562ab2">ComputeDominators</a>()</div>
<div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;        {</div>
<div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;            IGraphAdapter&lt;BasicBlock&lt;Ti&gt;&gt; a = <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>.DominanceAnalysisAdapter;</div>
<div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;            a.InvertRelation(a.Succs, a.Preds, BasicBlocks);</div>
<div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;            a.ComputeImmediateDominators(BasicBlocks, EntryCB);</div>
<div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;        }</div>
<div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;</div>
<div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a1421a284f4027dfed381b80ad9eac8fb">  745</a></span>&#160;        <span class="keyword">protected</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a1421a284f4027dfed381b80ad9eac8fb">ComputeBasicBlocks</a>()</div>
<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;        {</div>
<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;            AnalyzeBranches();</div>
<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;            ComputePredecessors();</div>
<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;            InferBasicBlocks();</div>
<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;            MarkSwitchTargets();</div>
<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;            <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> entry = GetBasicBlockStartingAt(_entryPoint);</div>
<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;            EntryCB = entry;</div>
<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;        }</div>
<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;</div>
<div class="line"><a name="l00759"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a2ff8154ddac48a7c4aa7086b988a46b4">  759</a></span>&#160;        <span class="keyword">protected</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a2ff8154ddac48a7c4aa7086b988a46b4">Setup</a>()</div>
<div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;        {</div>
<div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;            ComputeBasicBlocks();</div>
<div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;            AnalyzeLoops();</div>
<div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;            ComputeDominators();</div>
<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;        }</div>
<div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;</div>
<div class="line"><a name="l00766"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aba67ead1a91741bf383422822f7af5b7">  766</a></span>&#160;        <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">string</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aba67ead1a91741bf383422822f7af5b7">ToString</a>()</div>
<div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;        {</div>
<div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;            StringBuilder sb = <span class="keyword">new</span> StringBuilder();</div>
<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;            <span class="keywordflow">foreach</span> (<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> bb <span class="keywordflow">in</span> BasicBlocks)</div>
<div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;            {</div>
<div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;                sb.AppendLine(bb.ToString());</div>
<div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;            }</div>
<div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;            <span class="keywordflow">return</span> sb.ToString();</div>
<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;        }</div>
<div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;    }</div>
<div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;</div>
<div class="line"><a name="l00781"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">  781</a></span>&#160;    <span class="keyword">public</span> <span class="keyword">class </span>BasicBlock&lt;Ti&gt; : </div>
<div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;        IComparable&lt;BasicBlock&lt;Ti&gt;&gt;</div>
<div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;        where Ti: <a class="code" href="interface_system_sharp_1_1_analysis_1_1_i_instruction.html">IInstruction</a></div>
<div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;    {</div>
<div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a5597d747f1ee9ac6cc8ba953c3a4c33f">  788</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">int</span> StartIndex { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;</div>
<div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a054568c8ecb4d624a6be300e35d378a9">  793</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">int</span> EndIndex { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;</div>
<div class="line"><a name="l00798"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ad60f1e3b100f59dae59e65dcd745bb93">  798</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html">ControlFlowGraph&lt;Ti&gt;</a> Code { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;</div>
<div class="line"><a name="l00803"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a5aeb4937fce0d0b2b17cbe7ab4ef74e0">  803</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> IsExitBlock { <span class="keyword">get</span>; <span class="keyword">internal</span> set; }</div>
<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;</div>
<div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> IsLoop</div>
<div class="line"><a name="l00809"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a54099b4771f08e3b99dbdde6e1679692">  809</a></span>&#160;        {</div>
<div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;            <span class="keyword">get</span> { <span class="keywordflow">return</span> Type == ENodeType.Reducible || Type == ENodeType.Self; }</div>
<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;        }</div>
<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;</div>
<div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> IsReachable</div>
<div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a27e2c50074ab7d8b4fcf33d067e18583">  817</a></span>&#160;        {</div>
<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;            <span class="keyword">get</span> { <span class="keywordflow">return</span> PreOrderIndex &gt;= 0; }</div>
<div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;        }</div>
<div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;</div>
<div class="line"><a name="l00824"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ac96e58cf13883f8077e7cc14a2c7b0d4">  824</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> IsCondition { <span class="keyword">get</span>; <span class="keyword">internal</span> set; }</div>
<div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;</div>
<div class="line"><a name="l00829"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a22b1a896f0e0024cf1862bc2456f8881">  829</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> IsBranch { <span class="keyword">get</span>; <span class="keyword">internal</span> set; }</div>
<div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;</div>
<div class="line"><a name="l00834"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#abbfa7a5a97d1651ee1a549dbf8f3e77c">  834</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> IsSwitch { <span class="keyword">get</span>; <span class="keyword">internal</span> set; }</div>
<div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;</div>
<div class="line"><a name="l00839"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a6e0d65fba34e0bec24c8a14ecb82ac7e">  839</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> IsSwitchTarget { <span class="keyword">get</span>; <span class="keyword">internal</span> set; }</div>
<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;</div>
<div class="line"><a name="l00844"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a87e111ff8d18316a144d1dd53494da5b">  844</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] Predecessors { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;</div>
<div class="line"><a name="l00849"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a3754c24b7b0c640000e578aa76499a51">  849</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> IDom { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;</div>
<div class="line"><a name="l00854"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a670bdf1c77b9c258deb6f544d4881f37">  854</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] Dominatees { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;</div>
<div class="line"><a name="l00863"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a0cf9019a58e1f1c0f4caf17e403bee29">  863</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">int</span> PostOrderIndex { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;</div>
<div class="line"><a name="l00872"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a0bb5bfe894feb982b5a47d73fab546d4">  872</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">int</span> PreOrderIndex { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;</div>
<div class="line"><a name="l00877"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a1bf8398a40f76af3aaa5d1e8c6e191cb">  877</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> PostOrderParent { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;</div>
<div class="line"><a name="l00882"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#aff21c7688ca2d29c06dbcc5f51cb4500">  882</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] PostOrderChildren { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;</div>
<div class="line"><a name="l00887"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ad5a3a11a9d2d6864c62dde1f0d5d717a">  887</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> PreOrderLast { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;</div>
<div class="line"><a name="l00892"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#abd22ec58d71d9e45597a7c561b0df235">  892</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="namespace_system_sharp_1_1_tree_algorithms.html#a42c198b43d26b1f8b998dd6ce93c8d34">ENodeType</a> Type { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;</div>
<div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ab96b8d8bf58941a1f56d04ba78c829b5">  897</a></span>&#160;        <span class="keyword">public</span> HashSet&lt;BasicBlock&lt;Ti&gt;&gt; BackPreds { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;</div>
<div class="line"><a name="l00902"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a668fa90ea4a56f57f3a81ef1e79ba458">  902</a></span>&#160;        <span class="keyword">public</span> HashSet&lt;BasicBlock&lt;Ti&gt;&gt; NonBackPreds { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;</div>
<div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a0a875ad973df0908a23ad65b8827748c">  907</a></span>&#160;        <span class="keyword">public</span> HashSet&lt;BasicBlock&lt;Ti&gt;&gt; RedBackIn { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;</div>
<div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ae26395b70e723fd9af0f68b9731fe0be">  912</a></span>&#160;        <span class="keyword">public</span> HashSet&lt;BasicBlock&lt;Ti&gt;&gt; OtherIn { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;</div>
<div class="line"><a name="l00917"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a491f9d126ee268ef1e11159b41d52a3d">  917</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> Header { <span class="keyword">get</span>; <span class="keyword">private</span> set; }</div>
<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;</div>
<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;        <span class="keyword">internal</span> <span class="keywordtype">int</span> UnrollDepth { <span class="keyword">get</span>; set; }</div>
<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;</div>
<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;        <span class="keyword">private</span> List&lt;BasicBlock&lt;Ti&gt;&gt; _predecessors = <span class="keyword">new</span> List&lt;BasicBlock&lt;Ti&gt;&gt;();</div>
<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;        <span class="keyword">private</span> List&lt;BasicBlock&lt;Ti&gt;&gt; _dominatees = <span class="keyword">new</span> List&lt;BasicBlock&lt;Ti&gt;&gt;();</div>
<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;        <span class="keyword">private</span> List&lt;BasicBlock&lt;Ti&gt;&gt; _tempList;</div>
<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;</div>
<div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a70f3752c2fd12a65e99524dc66b6729c">  934</a></span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a70f3752c2fd12a65e99524dc66b6729c">BasicBlock</a>(<span class="keywordtype">int</span> startIndex, <span class="keywordtype">int</span> endIndex, <a class="code" href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html">ControlFlowGraph&lt;Ti&gt;</a> cfg)</div>
<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;        {</div>
<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;            Code = cfg;</div>
<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;            StartIndex = startIndex;</div>
<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;            EndIndex = endIndex;</div>
<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;        }</div>
<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;</div>
<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;        <span class="keyword">public</span> IList&lt;Ti&gt; Range</div>
<div class="line"><a name="l00945"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#aace9afffdd01600cea179b5f90559baa">  945</a></span>&#160;        {</div>
<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;            <span class="keyword">get</span></div>
<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;            {</div>
<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;                Contract.Requires&lt;ArgumentOutOfRangeException&gt;(EndIndex - StartIndex + 1 &gt;= 0);</div>
<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;                Contract.Requires&lt;ArgumentOutOfRangeException&gt;(EndIndex &lt; Code.Instructions.Count);</div>
<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;</div>
<div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;                <span class="keywordflow">return</span> Code.Instructions.GetRange(StartIndex, EndIndex - StartIndex + 1);</div>
<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;            }</div>
<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;        }</div>
<div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;</div>
<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;        <span class="keyword">private</span> <span class="keyword">static</span> <span class="keywordtype">void</span> Indent(StringBuilder sb, <span class="keywordtype">int</span> indent)</div>
<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;        {</div>
<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; indent; i++)</div>
<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;                sb.Append(<span class="stringliteral">&quot;  &quot;</span>);</div>
<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;        }</div>
<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;</div>
<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;        <span class="keyword">internal</span> <span class="keywordtype">string</span> ToStringInternal(<span class="keywordtype">int</span> indent)</div>
<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;        {</div>
<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;            StringBuilder sb = <span class="keyword">new</span> StringBuilder();</div>
<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;            Indent(sb, indent);</div>
<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;            <span class="keywordflow">if</span> (IsLoop)</div>
<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;                sb.Append(<span class="stringliteral">&quot;LOOP &quot;</span>);</div>
<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;            <span class="keywordflow">if</span> (IsCondition)</div>
<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;                sb.Append(<span class="stringliteral">&quot;IF &quot;</span>);</div>
<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;            <span class="keywordflow">if</span> (IsBranch)</div>
<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;                sb.Append(<span class="stringliteral">&quot;THEN/ELSE &quot;</span>);</div>
<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;            sb.AppendFormat(<span class="stringliteral">&quot;{{ T:{0} H:{1} Pre:{2} Post:{3}\n&quot;</span>, </div>
<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;                Type,</div>
<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;                Header == null ? <span class="stringliteral">&quot;?&quot;</span> : Header.StartIndex.ToString(),</div>
<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;                PreOrderIndex, PostOrderIndex);</div>
<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;            <span class="keywordflow">foreach</span> (Ti ili <span class="keywordflow">in</span> Range)</div>
<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;            {</div>
<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;                Indent(sb, indent + 1);</div>
<div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;                sb.AppendLine(ili.ToString());</div>
<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;            }</div>
<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; indent; i++)</div>
<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;                sb.Append(<span class="stringliteral">&quot;  &quot;</span>);</div>
<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;            sb.AppendLine(<span class="stringliteral">&quot;}&quot;</span>);</div>
<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;            <span class="keywordflow">return</span> sb.ToString();</div>
<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;        }</div>
<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;</div>
<div class="line"><a name="l00986"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a28278ffc6dd03e7a340e639d1dee9f07">  986</a></span>&#160;        <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">string</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a28278ffc6dd03e7a340e639d1dee9f07">ToString</a>()</div>
<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;        {</div>
<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;            <span class="keywordflow">return</span> ToStringInternal(0);</div>
<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;        }</div>
<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;</div>
<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] Successors</div>
<div class="line"><a name="l00995"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#aa90bb5471752d8d1dae672331bce9af5">  995</a></span>&#160;        {</div>
<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;            <span class="keyword">get</span></div>
<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;            {</div>
<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;                Ti[] succs = Code.GetSuccessors(EndIndex);</div>
<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;                <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] result = succs.Select(i =&gt; Code.GetBasicBlockStartingAt(i.Index)).ToArray();</div>
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;                <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;            }</div>
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;        }</div>
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;</div>
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] SuccessorsWithoutSwitchTargets</div>
<div class="line"><a name="l01008"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a221d1802dd014e577fb9951eeae6478d"> 1008</a></span>&#160;        {</div>
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;            <span class="keyword">get</span></div>
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;            {</div>
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;                <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] succs = Successors;</div>
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;                <span class="keywordflow">if</span> (IsSwitch)</div>
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;                {</div>
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;                    <span class="keywordflow">return</span> succs;</div>
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;                }</div>
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;                {</div>
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;                    <span class="keywordflow">return</span> succs.Where(x =&gt; !x.IsSwitchTarget &amp;&amp; !x.IsExitBlock).ToArray();</div>
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;                }</div>
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;            }</div>
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;        }</div>
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;</div>
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;        <span class="keyword">public</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] SuccessorsWithoutExitBlock</div>
<div class="line"><a name="l01027"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a2686433714befeea54b07462970fbd67"> 1027</a></span>&#160;        {</div>
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;            <span class="keyword">get</span></div>
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;            {</div>
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;                <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>[] succs = Successors;</div>
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;                <span class="keywordflow">if</span> (IsSwitch)</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;                {</div>
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;                    <span class="keywordflow">return</span> succs;</div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;                }</div>
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;                {</div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;                    <span class="keywordflow">return</span> succs.Where(x =&gt; !x.IsExitBlock).ToArray();</div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;                }</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;            }</div>
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;        }</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;</div>
<div class="line"><a name="l01047"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a07b2c5c44b52665d98b11b8b73a18852"> 1047</a></span>&#160;        <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">bool</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a07b2c5c44b52665d98b11b8b73a18852">Equals</a>(<span class="keywordtype">object</span> obj)</div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;        {</div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;            <span class="keywordflow">if</span> (obj is <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a>)</div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;            {</div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;                BasicBlock&lt;Ti&gt; cb = (BasicBlock&lt;Ti&gt;)obj;</div>
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;                <span class="keywordflow">if</span> (cb.<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ad60f1e3b100f59dae59e65dcd745bb93">Code</a> != Code)</div>
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;                    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;                <span class="keywordflow">return</span> StartIndex == cb.StartIndex &amp;&amp;</div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;                    EndIndex == cb.EndIndex;</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;            }</div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;            {</div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;            }</div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;        }</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;</div>
<div class="line"><a name="l01063"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a54c70d10ce5125eb299ff875d03e5972"> 1063</a></span>&#160;        <span class="keyword">public</span> <span class="keyword">override</span> <span class="keywordtype">int</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a54c70d10ce5125eb299ff875d03e5972">GetHashCode</a>()</div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;        {</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;            <span class="keywordflow">return</span> StartIndex.GetHashCode() * 13 ^ EndIndex.GetHashCode();</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;        }</div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="preprocessor">        #region IComparable&lt;CodeBlock&lt;Ti&gt;&gt; Members</span></div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01075"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a4fd33548c71adfa89d4cca8efb46e271"> 1075</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">int</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a4fd33548c71adfa89d4cca8efb46e271">CompareTo</a>(<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> other)</div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;        {</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;            <span class="keywordflow">if</span> (StartIndex &lt; other.<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a5597d747f1ee9ac6cc8ba953c3a4c33f">StartIndex</a>)</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;            {</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;                <span class="keywordflow">if</span> (EndIndex &lt; other.<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a054568c8ecb4d624a6be300e35d378a9">EndIndex</a>)</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;                    <span class="keywordflow">return</span> -1;</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EndIndex &gt;= other.<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a054568c8ecb4d624a6be300e35d378a9">EndIndex</a>)</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;                    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;                    <span class="keywordflow">throw</span> <span class="keyword">new</span> InvalidOperationException(<span class="stringliteral">&quot;Intervals overlap&quot;</span>);</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;            }</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;            <span class="keywordflow">else</span> <span class="keywordflow">if</span> (StartIndex == other.<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a5597d747f1ee9ac6cc8ba953c3a4c33f">StartIndex</a>)</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;            {</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;                <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;            }</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;            <span class="keywordflow">else</span></div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;            {</div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;                <span class="keywordflow">if</span> (StartIndex &gt; other.<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a054568c8ecb4d624a6be300e35d378a9">EndIndex</a>)</div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;                    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;                <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EndIndex &lt;= other.<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a054568c8ecb4d624a6be300e35d378a9">EndIndex</a>)</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;                    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;                <span class="keywordflow">else</span></div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;                    <span class="keywordflow">throw</span> <span class="keyword">new</span> InvalidOperationException(<span class="stringliteral">&quot;Intervals overlap&quot;</span>);</div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;            }</div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;        }</div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;</div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="preprocessor">        #endregion</span></div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l01108"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a00dd1c800eac73e9fcbc841d79e8eeba"> 1108</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a00dd1c800eac73e9fcbc841d79e8eeba">BelongsToLoop</a>(<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> header)</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;        {</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;            <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> cur = <span class="keyword">this</span>;</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;            <span class="keywordflow">while</span> (cur != null &amp;&amp; !cur.<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a07b2c5c44b52665d98b11b8b73a18852">Equals</a>(header))</div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;            {</div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;                cur = cur.Header;</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;            }</div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;            <span class="keywordflow">return</span> (cur != null);</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;        }</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;</div>
<div class="line"><a name="l01123"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ad54059581bb0be7c3c52a013eef6ff8d"> 1123</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ad54059581bb0be7c3c52a013eef6ff8d">Contains</a>(<span class="keywordtype">int</span> index)</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;        {</div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;            <span class="keywordflow">return</span> index &gt;= StartIndex &amp;&amp; index &lt;= EndIndex;</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;        }</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;</div>
<div class="line"><a name="l01133"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a886b4d59386e6bdbcb8ddf8f90b693c7"> 1133</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a886b4d59386e6bdbcb8ddf8f90b693c7">Contains</a>(Ti i)</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;        {</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;            <span class="keywordflow">return</span> Contains(i.Index);</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;        }</div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;</div>
<div class="line"><a name="l01143"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a770230421053ee8d80cdd39713048020"> 1143</a></span>&#160;        <span class="keyword">public</span> <span class="keywordtype">bool</span> <a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a770230421053ee8d80cdd39713048020">IsAncestor</a>(<a class="code" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">BasicBlock&lt;Ti&gt;</a> grandChild)</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;        {</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;            <span class="keywordflow">return</span> LoopAnalysisAdapter.IsAncestor(<span class="keyword">this</span>, grandChild);</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;        }</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;        <span class="keyword">public</span> <span class="keyword">static</span> IGraphAdapter&lt;BasicBlock&lt;Ti&gt;&gt; LoopAnalysisAdapter</div>
<div class="line"><a name="l01152"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a485428f35d6f9856fadc63225ad77b4b"> 1152</a></span>&#160;        {</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;            <span class="keyword">get</span></div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;            {</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">new</span> DefaultTreeAdapter&lt;BasicBlock&lt;Ti&gt;&gt;(</div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;                    null,</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;                    x =&gt; x.SuccessorsWithoutSwitchTargets, null,</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;                    x =&gt; x.Predecessors, (x, y) =&gt; x.Predecessors = y,</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;                    x =&gt; x._tempList, (x, l) =&gt; x._tempList = l,</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;                    x =&gt; x.PreOrderIndex, (x, i) =&gt; x.PreOrderIndex = i,</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;                    x =&gt; x.PreOrderLast, (x, y) =&gt; x.PreOrderLast = y,</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;                    x =&gt; x.PostOrderIndex, (x, i) =&gt; { <span class="keywordflow">throw</span> <span class="keyword">new</span> InvalidOperationException(); },</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;                    x =&gt; x.Type, (x, t) =&gt; x.Type = t,</div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;                    x =&gt; x.BackPreds, (x, s) =&gt; x.BackPreds = s,</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;                    x =&gt; x.NonBackPreds, (x, s) =&gt; x.NonBackPreds = s,</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;                    x =&gt; x.RedBackIn, (x, s) =&gt; x.RedBackIn = s,</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;                    x =&gt; x.OtherIn, (x, s) =&gt; x.OtherIn = s,</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;                    x =&gt; x.Header, (x, y) =&gt; x.Header = y,</div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;                    x =&gt; x.IDom, (x, y) =&gt; x.IDom = y,</div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;                    x =&gt; x.Dominatees, (x, y) =&gt; x.Dominatees = y</div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;                    );</div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;            }</div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;        }</div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;</div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;        <span class="keyword">public</span> <span class="keyword">static</span> IGraphAdapter&lt;BasicBlock&lt;Ti&gt;&gt; DominanceAnalysisAdapter</div>
<div class="line"><a name="l01179"></a><span class="lineno"><a class="line" href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a9853dbb126509c8322522f73033cefe8"> 1179</a></span>&#160;        {</div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;            <span class="keyword">get</span></div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;            {</div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;                <span class="keywordflow">return</span> <span class="keyword">new</span> DefaultTreeAdapter&lt;BasicBlock&lt;Ti&gt;&gt;(</div>
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;                    null,</div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;                    x =&gt; x.SuccessorsWithoutExitBlock, null,</div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;                    x =&gt; x.Predecessors, (x, y) =&gt; x.Predecessors = y,</div>
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;                    x =&gt; x._tempList, (x, l) =&gt; x._tempList = l,</div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;                    x =&gt; x.PreOrderIndex, (x, i) =&gt; x.PreOrderIndex = i,</div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;                    x =&gt; x.PreOrderLast, (x, y) =&gt; x.PreOrderLast = y,</div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;                    x =&gt; x.PostOrderIndex, (x, i) =&gt; x.PostOrderIndex = i,</div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;                    x =&gt; x.Type, (x, t) =&gt; x.Type = t,</div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;                    x =&gt; x.BackPreds, (x, s) =&gt; x.BackPreds = s,</div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;                    x =&gt; x.NonBackPreds, (x, s) =&gt; x.NonBackPreds = s,</div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;                    x =&gt; x.RedBackIn, (x, s) =&gt; x.RedBackIn = s,</div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;                    x =&gt; x.OtherIn, (x, s) =&gt; x.OtherIn = s,</div>
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;                    x =&gt; x.Header, (x, y) =&gt; x.Header = y,</div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;                    x =&gt; x.IDom, (x, y) =&gt; x.IDom = y,</div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;                    x =&gt; x.Dominatees, (x, y) =&gt; x.Dominatees = y</div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;                    );</div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;            }</div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;        }</div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;    }</div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;}</div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a05c9f79b103980e69809b9529e711525"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a05c9f79b103980e69809b9529e711525">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetPredecessors</a></div><div class="ttdeci">Ti[] GetPredecessors(int index)</div><div class="ttdoc">Given an instruction index, returns all possible predecessor instructions </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00549">ControlflowAnalysis.cs:549</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_ae5c60204e0a023c83ac9abaf2bf3c6e1"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1">SystemSharp.Analysis.EBranchBehavior</a></div><div class="ttdeci">EBranchBehavior</div><div class="ttdoc">Classifies branch instructions into categories </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00066">ControlflowAnalysis.cs:66</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a297a1358d9e61ee4fce1cae42d391a11aaf96ab416602c6852b1ba5201feaacf6"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11aaf96ab416602c6852b1ba5201feaacf6">SystemSharp.Analysis.Writing</a></div><div class="ttdoc">Writing resource access </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_ac6dc8f7463e58f11e8ac6849e50f1acd"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ac6dc8f7463e58f11e8ac6849e50f1acd">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetSuccessors</a></div><div class="ttdeci">Ti[] GetSuccessors(int index)</div><div class="ttdoc">Given an instruction index, returns all possible successor instructions </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00529">ControlflowAnalysis.cs:529</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;</a></div><div class="ttdoc">This data structure represents a control-flow graph </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00308">ControlflowAnalysis.cs:308</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a5ebdc38449ace206f5d7a926a47adb48"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48">SystemSharp.Analysis.ELocalVariableAccess</a></div><div class="ttdeci">ELocalVariableAccess</div><div class="ttdoc">Classifies local variable access instructions into categories </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00102">ControlflowAnalysis.cs:102</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_ad53cd4f85a326f93a65facd93644333a"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ad53cd4f85a326f93a65facd93644333a">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetIDomIndex</a></div><div class="ttdeci">int GetIDomIndex(int index)</div><div class="ttdoc">Given an instruction index, returns the index of its immediate dominator </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00569">ControlflowAnalysis.cs:569</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_reference_info_html_af0929cbdd5bcfdabd1f413d443966893"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_reference_info.html#af0929cbdd5bcfdabd1f413d443966893">SystemSharp.Analysis.ReferenceInfo.EMode</a></div><div class="ttdeci">EMode</div><div class="ttdoc">The flag field indicates whether memory location is read and/or written </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00242">ControlflowAnalysis.cs:242</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_ad60f1e3b100f59dae59e65dcd745bb93"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ad60f1e3b100f59dae59e65dcd745bb93">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.Code</a></div><div class="ttdeci">ControlFlowGraph&lt; Ti &gt; Code</div><div class="ttdoc">Containing control-flow graph </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00798">ControlflowAnalysis.cs:798</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_ad54059581bb0be7c3c52a013eef6ff8d"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#ad54059581bb0be7c3c52a013eef6ff8d">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.Contains</a></div><div class="ttdeci">bool Contains(int index)</div><div class="ttdoc">Tests whether this basic block contains a particular instruction </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l01123">ControlflowAnalysis.cs:1123</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_reference_info_html"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_reference_info.html">SystemSharp.Analysis.ReferenceInfo</a></div><div class="ttdoc">This class captures information on instructions which reference memory locations (i.e. indirections) </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00236">ControlflowAnalysis.cs:236</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;</a></div><div class="ttdoc">This class represents a basic block. </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00781">ControlflowAnalysis.cs:781</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a02fbac5e52aeca7c53b979a3b464d8d8"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a02fbac5e52aeca7c53b979a3b464d8d8">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.CreateBasicBlock</a></div><div class="ttdeci">virtual BasicBlock&lt; Ti &gt; CreateBasicBlock(int startIndex, int lastIndex)</div><div class="ttdoc">Creates a basic block for a range of instructions. Override this if you want to create a specialized ...</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00668">ControlflowAnalysis.cs:668</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_reference_info_html_a4bb81eb7b464b88cae5e10b20875cc10"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_reference_info.html#a4bb81eb7b464b88cae5e10b20875cc10">SystemSharp.Analysis.ReferenceInfo.EKind</a></div><div class="ttdeci">EKind</div><div class="ttdoc">Classifies whether memory location is part of an assignment or just loaded </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00252">ControlflowAnalysis.cs:252</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a297a1358d9e61ee4fce1cae42d391a11a26fccddf2f94b1685b184267996e10f8"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11a26fccddf2f94b1685b184267996e10f8">SystemSharp.Analysis.Reading</a></div><div class="ttdoc">Reading resource access </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_ac3e44c9f0c164a0936c8af1c47e52130"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ac3e44c9f0c164a0936c8af1c47e52130">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetPredecessorsOf</a></div><div class="ttdeci">Ti[] GetPredecessorsOf(Ti ili)</div><div class="ttdoc">Given an instruction, returns all possible predecessor instructions </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00559">ControlflowAnalysis.cs:559</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a54c70d10ce5125eb299ff875d03e5972"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a54c70d10ce5125eb299ff875d03e5972">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.GetHashCode</a></div><div class="ttdeci">override int GetHashCode()</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l01063">ControlflowAnalysis.cs:1063</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a297a1358d9e61ee4fce1cae42d391a11a81e124c25b261c366509c30962a4a7fd"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11a81e124c25b261c366509c30962a4a7fd">SystemSharp.Analysis.NoResource</a></div><div class="ttdoc">Not a resource access </div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_ae5c60204e0a023c83ac9abaf2bf3c6e1a8ce61dd2505effd96f937fa743b6491f"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1a8ce61dd2505effd96f937fa743b6491f">SystemSharp.Analysis.Throw</a></div><div class="ttdoc">Exception throw instruction </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_af63cace6d5aaf14d33002169490d1f51"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af63cace6d5aaf14d33002169490d1f51">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.IsBranch</a></div><div class="ttdeci">bool IsBranch(int index)</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00396">ControlflowAnalysis.cs:396</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a07cc6c00d393e2c4e350d74e0d9804c2adacdb83ade6c4e8878717e206175dfd8"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2adacdb83ade6c4e8878717e206175dfd8">SystemSharp.Analysis.Branch</a></div><div class="ttdoc">A branch instruction </div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a5ebdc38449ace206f5d7a926a47adb48a114757c38419c9fc8c3811768d549204"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48a114757c38419c9fc8c3811768d549204">SystemSharp.Analysis.WriteVariable</a></div><div class="ttdoc">Write acces to local variable </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_ab8bbf4a61340fff1ff5b7388a3bfa846"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#ab8bbf4a61340fff1ff5b7388a3bfa846">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetPostOrderIndex</a></div><div class="ttdeci">int GetPostOrderIndex(int index)</div><div class="ttdoc">Given an instruction index, returns its associated post-order index </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00610">ControlflowAnalysis.cs:610</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_af90c76096917b1aca642d97928562ab2"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#af90c76096917b1aca642d97928562ab2">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ComputeDominators</a></div><div class="ttdeci">virtual void ComputeDominators()</div><div class="ttdoc">Computes the immediate dominator of each basic block. The default implementation directs the task to ...</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00735">ControlflowAnalysis.cs:735</a></div></div>
<div class="ttc" id="interface_system_sharp_1_1_analysis_1_1_i_instruction_html"><div class="ttname"><a href="interface_system_sharp_1_1_analysis_1_1_i_instruction.html">SystemSharp.Analysis.IInstruction</a></div><div class="ttdoc">This interface associates instructions with a unique, 0-based indices </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00032">ControlflowAnalysis.cs:32</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a07cc6c00d393e2c4e350d74e0d9804c2a6311ae17c1ee52b36e68aaf4ad066387"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2a6311ae17c1ee52b36e68aaf4ad066387">SystemSharp.Analysis.Other</a></div><div class="ttdoc">Everything else </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a2ff8154ddac48a7c4aa7086b988a46b4"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a2ff8154ddac48a7c4aa7086b988a46b4">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.Setup</a></div><div class="ttdeci">virtual void Setup()</div><div class="ttdoc">Constructs all essential data structures. The default implementation computes basic blocks...</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00759">ControlflowAnalysis.cs:759</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a5597d747f1ee9ac6cc8ba953c3a4c33f"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a5597d747f1ee9ac6cc8ba953c3a4c33f">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.StartIndex</a></div><div class="ttdeci">int StartIndex</div><div class="ttdoc">Index of first instruction covered by this basic block </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00788">ControlflowAnalysis.cs:788</a></div></div>
<div class="ttc" id="interface_system_sharp_1_1_analysis_1_1_i_instruction_resource_html"><div class="ttname"><a href="interface_system_sharp_1_1_analysis_1_1_i_instruction_resource.html">SystemSharp.Analysis.IInstructionResource</a></div><div class="ttdoc">Abstract representation of a resource which might be accessed by an instruction </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00128">ControlflowAnalysis.cs:128</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_aefe2bdb6703327dc54e53fd13c829d76"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aefe2bdb6703327dc54e53fd13c829d76">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetBasicBlockStartingAt</a></div><div class="ttdeci">BasicBlock&lt; Ti &gt; GetBasicBlockStartingAt(int index)</div><div class="ttdoc">Returns the basic block which begins at the supplied instruction index </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00643">ControlflowAnalysis.cs:643</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_aba67ead1a91741bf383422822f7af5b7"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aba67ead1a91741bf383422822f7af5b7">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ToString</a></div><div class="ttdeci">override string ToString()</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00766">ControlflowAnalysis.cs:766</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a5ebdc38449ace206f5d7a926a47adb48a33b51eacb1cd95814bc38547576081ee"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48a33b51eacb1cd95814bc38547576081ee">SystemSharp.Analysis.AddressOfVariable</a></div><div class="ttdoc">Address of local variable </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a0020d8ad2c74d005197c90f5fe700a14"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a0020d8ad2c74d005197c90f5fe700a14">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ControlFlowGraph</a></div><div class="ttdeci">ControlFlowGraph(IEnumerable&lt; Ti &gt; instructions, Ti marshal, IInstructionInfo&lt; Ti &gt; iinfo, int entryPoint=0, ISet&lt; int &gt; exitPoints=null)</div><div class="ttdoc">Constructs a new instance based on an instruction sequence </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00356">ControlflowAnalysis.cs:356</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_ae5c60204e0a023c83ac9abaf2bf3c6e1ac7a99bc13d9a899dad0e6372da96d3ac"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1ac7a99bc13d9a899dad0e6372da96d3ac">SystemSharp.Analysis.NoBranch</a></div><div class="ttdoc">Not a branch instruction </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a054568c8ecb4d624a6be300e35d378a9"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a054568c8ecb4d624a6be300e35d378a9">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.EndIndex</a></div><div class="ttdeci">int EndIndex</div><div class="ttdoc">Index of last instruction covered by this basic block </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00793">ControlflowAnalysis.cs:793</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a1421a284f4027dfed381b80ad9eac8fb"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a1421a284f4027dfed381b80ad9eac8fb">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ComputeBasicBlocks</a></div><div class="ttdeci">virtual void ComputeBasicBlocks()</div><div class="ttdoc">Constructs basic blocks from the instruction sequence. </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00745">ControlflowAnalysis.cs:745</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_instruction_info_extensions_html"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_instruction_info_extensions.html">SystemSharp.Analysis.InstructionInfoExtensions</a></div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00197">ControlflowAnalysis.cs:197</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a07b2c5c44b52665d98b11b8b73a18852"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a07b2c5c44b52665d98b11b8b73a18852">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.Equals</a></div><div class="ttdeci">override bool Equals(object obj)</div><div class="ttdoc">Two basic blocks are defined to be equal iff they belong to the same control-flow graph and cover the...</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l01047">ControlflowAnalysis.cs:1047</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a2dc7fac06bd1ad1fa8ea76cd94e4095a"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a2dc7fac06bd1ad1fa8ea76cd94e4095a">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetSuccessorsOf</a></div><div class="ttdeci">Ti[] GetSuccessorsOf(Ti ili)</div><div class="ttdoc">Given an instruction, returns all possible successor instructions </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00539">ControlflowAnalysis.cs:539</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a5ebdc38449ace206f5d7a926a47adb48a88a12f09800c497f30b98781952b50f2"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48a88a12f09800c497f30b98781952b50f2">SystemSharp.Analysis.NoAccess</a></div><div class="ttdoc">Not a local variable access </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a148c06fbb5564cdc5e36cf3ead7167ce"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a148c06fbb5564cdc5e36cf3ead7167ce">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.AnalyzeLoops</a></div><div class="ttdeci">virtual void AnalyzeLoops()</div><div class="ttdoc">Analyzes the loop nesting structure of the control-flow graph. The default implementation directs the...</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00723">ControlflowAnalysis.cs:723</a></div></div>
<div class="ttc" id="interface_system_sharp_1_1_analysis_1_1_i_instruction_info_3_01_ti_01_4_html"><div class="ttname"><a href="interface_system_sharp_1_1_analysis_1_1_i_instruction_info_3_01_ti_01_4.html">SystemSharp.Analysis.IInstructionInfo&lt; Ti &gt;</a></div><div class="ttdoc">Generic interface for services classifying instructions of some type </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00163">ControlflowAnalysis.cs:163</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_aa5d3e71c9bc2640da4bb8455a58087c3"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa5d3e71c9bc2640da4bb8455a58087c3">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetBasicBlockContaining</a></div><div class="ttdeci">BasicBlock&lt; Ti &gt; GetBasicBlockContaining(int index)</div><div class="ttdoc">Returns the basic block which contains a given instruction </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00653">ControlflowAnalysis.cs:653</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a886b4d59386e6bdbcb8ddf8f90b693c7"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a886b4d59386e6bdbcb8ddf8f90b693c7">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.Contains</a></div><div class="ttdeci">bool Contains(Ti i)</div><div class="ttdoc">Tests whether this basic block containts a particular instruction </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l01133">ControlflowAnalysis.cs:1133</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a770230421053ee8d80cdd39713048020"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a770230421053ee8d80cdd39713048020">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.IsAncestor</a></div><div class="ttdeci">bool IsAncestor(BasicBlock&lt; Ti &gt; grandChild)</div><div class="ttdoc">Tests whether this basic block is an ancestor of another block, due to the pre-order traversal tree ...</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l01143">ControlflowAnalysis.cs:1143</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_ae5c60204e0a023c83ac9abaf2bf3c6e1a5ee075c892e8b140f5c5ffdccb27b28b"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1a5ee075c892e8b140f5c5ffdccb27b28b">SystemSharp.Analysis.UBranch</a></div><div class="ttdoc">Unconditional branch </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a259683dc2ea7d3b84d09b0f7cdcea50f"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a259683dc2ea7d3b84d09b0f7cdcea50f">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.IsLocalPinned</a></div><div class="ttdeci">virtual bool IsLocalPinned(int local)</div><div class="ttdoc">Tells whether a local variable is pinned, see http://msdn.microsoft.com/en-us/library/f58wzh21%28v=vs...</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00383">ControlflowAnalysis.cs:383</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_tree_algorithms_html_a42c198b43d26b1f8b998dd6ce93c8d34"><div class="ttname"><a href="namespace_system_sharp_1_1_tree_algorithms.html#a42c198b43d26b1f8b998dd6ce93c8d34">SystemSharp.TreeAlgorithms.ENodeType</a></div><div class="ttdeci">ENodeType</div><div class="ttdoc">Node types of Havlak&#39;s loop analysis algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="_tree_algorithms_8cs_source.html#l00065">TreeAlgorithms.cs:65</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a70f3752c2fd12a65e99524dc66b6729c"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a70f3752c2fd12a65e99524dc66b6729c">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.BasicBlock</a></div><div class="ttdeci">BasicBlock(int startIndex, int endIndex, ControlFlowGraph&lt; Ti &gt; cfg)</div><div class="ttdoc">Constructs a basic block covering a specific instruction range </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00934">ControlflowAnalysis.cs:934</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_aa0f66e1d0dd6b8c1445c690f38662a04"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#aa0f66e1d0dd6b8c1445c690f38662a04">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.IsBranchTarget</a></div><div class="ttdeci">bool IsBranchTarget(int index)</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00412">ControlflowAnalysis.cs:412</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_ae5c60204e0a023c83ac9abaf2bf3c6e1abbc155fb2b111bf61c4f5ff892915e6b"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1abbc155fb2b111bf61c4f5ff892915e6b">SystemSharp.Analysis.Switch</a></div><div class="ttdoc">Switch (i.e. case select) instruction </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a9d54a4394119c32cd709e713f9576916"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a9d54a4394119c32cd709e713f9576916">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.GetLCASet</a></div><div class="ttdeci">IEnumerable&lt; int &gt; GetLCASet(IEnumerable&lt; int &gt; query)</div><div class="ttdoc">Given a set of instruction indices, returns the set of their lowest common ancestors. </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00621">ControlflowAnalysis.cs:621</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a07cc6c00d393e2c4e350d74e0d9804c2"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2">SystemSharp.Analysis.EInstructionClass</a></div><div class="ttdeci">EInstructionClass</div><div class="ttdoc">Classifies instructions into categories </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00040">ControlflowAnalysis.cs:40</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a00dd1c800eac73e9fcbc841d79e8eeba"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a00dd1c800eac73e9fcbc841d79e8eeba">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.BelongsToLoop</a></div><div class="ttdeci">bool BelongsToLoop(BasicBlock&lt; Ti &gt; header)</div><div class="ttdoc">Tests whether this basic block is part of a particular loop </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l01108">ControlflowAnalysis.cs:1108</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4_html_a6b5956c06a8a298304286a8005db00b0"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_control_flow_graph_3_01_ti_01_4.html#a6b5956c06a8a298304286a8005db00b0">SystemSharp.Analysis.ControlFlowGraph&lt; Ti &gt;.ComputePredecessors</a></div><div class="ttdeci">void ComputePredecessors()</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00503">ControlflowAnalysis.cs:503</a></div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_reference_info_html_aaa9a8467b55a9ea95ddd3e8961984865"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_reference_info.html#aaa9a8467b55a9ea95ddd3e8961984865">SystemSharp.Analysis.ReferenceInfo.ReferenceInfo</a></div><div class="ttdeci">ReferenceInfo(EMode mode, EKind kind, IEnumerable&lt; int &gt; reachingDefinitions)</div><div class="ttdoc">Constructs a new instance </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00280">ControlflowAnalysis.cs:280</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a297a1358d9e61ee4fce1cae42d391a11"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a297a1358d9e61ee4fce1cae42d391a11">SystemSharp.Analysis.EInstructionResourceAccess</a></div><div class="ttdeci">EInstructionResourceAccess</div><div class="ttdoc">Classifies resource accesses into categories </div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00141">ControlflowAnalysis.cs:141</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a07cc6c00d393e2c4e350d74e0d9804c2ac3755e61202abd74da5885d2e9c9160e"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2ac3755e61202abd74da5885d2e9c9160e">SystemSharp.Analysis.Call</a></div><div class="ttdoc">A method call </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a28278ffc6dd03e7a340e639d1dee9f07"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a28278ffc6dd03e7a340e639d1dee9f07">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.ToString</a></div><div class="ttdeci">override string ToString()</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l00986">ControlflowAnalysis.cs:986</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a5ebdc38449ace206f5d7a926a47adb48a99302f479550c659a7461577136d7fa6"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a5ebdc38449ace206f5d7a926a47adb48a99302f479550c659a7461577136d7fa6">SystemSharp.Analysis.ReadVariable</a></div><div class="ttdoc">Read access to local variable </div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_ae5c60204e0a023c83ac9abaf2bf3c6e1a4a7aa8e5bec284d6af34bd57ce4e9ea6"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1a4a7aa8e5bec284d6af34bd57ce4e9ea6">SystemSharp.Analysis.CBranch</a></div><div class="ttdoc">Conditional branch </div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_ae5c60204e0a023c83ac9abaf2bf3c6e1a988fd738de9c6d177440c5dcf69e73ce"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#ae5c60204e0a023c83ac9abaf2bf3c6e1a988fd738de9c6d177440c5dcf69e73ce">SystemSharp.Analysis.Return</a></div><div class="ttdoc">Method return instruction </div></div>
<div class="ttc" id="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4_html_a4fd33548c71adfa89d4cca8efb46e271"><div class="ttname"><a href="class_system_sharp_1_1_analysis_1_1_basic_block_3_01_ti_01_4.html#a4fd33548c71adfa89d4cca8efb46e271">SystemSharp.Analysis.BasicBlock&lt; Ti &gt;.CompareTo</a></div><div class="ttdeci">int CompareTo(BasicBlock&lt; Ti &gt; other)</div><div class="ttdoc">Compares this basic block to another basic block. The ordering is defined by the indices of their res...</div><div class="ttdef"><b>Definition:</b> <a href="_controlflow_analysis_8cs_source.html#l01075">ControlflowAnalysis.cs:1075</a></div></div>
<div class="ttc" id="namespace_system_sharp_1_1_analysis_html_a07cc6c00d393e2c4e350d74e0d9804c2a003ad240907f30f029b30e4afbbb0e6d"><div class="ttname"><a href="namespace_system_sharp_1_1_analysis.html#a07cc6c00d393e2c4e350d74e0d9804c2a003ad240907f30f029b30e4afbbb0e6d">SystemSharp.Analysis.LocalVariableAccess</a></div><div class="ttdoc">An access to a local variable </div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_bb5e995590685548b7e11478911ee7c3.html">SystemSharp-Google-SVN</a></li><li class="navelem"><a class="el" href="dir_8deefa4467a62b572b52d238d562b104.html">SystemSharp</a></li><li class="navelem"><a class="el" href="dir_0e5a72156f8560bbc472a395da2569d6.html">SystemSharp</a></li><li class="navelem"><a class="el" href="dir_9d3c30b4336bd92c64ccf0aeee487ace.html">SystemSharp</a></li><li class="navelem"><a class="el" href="dir_d5bda8a155622a5a3d520660116af4c1.html">Analysis</a></li><li class="navelem"><a class="el" href="_controlflow_analysis_8cs.html">ControlflowAnalysis.cs</a></li>
    <li class="footer">Generated on Thu Dec 26 2013 14:21:38 for SystemSharp by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
  </ul>
</div>
</body>
</html>
